<?php

class ProgrammazioneController extends BaseController {

	/*
	|--------------------------------------------------------------------------
	| Programmazione Controller
	|--------------------------------------------------------------------------
	|
	| You may wish to use controllers instead of, or in addition to, Closure
	| based routes. That's great! Here is an example controller method to
	| get you started. To route to this controller, just add the route:
	|
	|	Route::get('/', 'HomeController@showWelcome');
	|
	*/

	public function getIndex()
	{
		
		$commesse = DB::table('commesse')
								//->join('strumenti_misura','commesse.id_strumento_misura','=','strumenti_misura.codice')
								->orderBy('id_strumento_misura', 'posizione', 'asc')
								->orderBy('posizione')
								->whereNull('data_fine')
								//->select('commesse.numero','commesse.fase','commesse.macchina','commesse.articolo','commesse.data_inizio','commesse.data_fine','commesse.id_strumento_misura', 'strumenti_misura.collocazione')
								->get();
		
		//var_dump($commesse);
		$lista_strumenti = array();
		$collocazione_strumenti = array();
		
		foreach($commesse as $commessa){
			if(!array_key_exists($commessa->id_strumento_misura, $lista_strumenti)){
				$collocazione_strumenti[$commessa->id_strumento_misura] = $commessa->macchina;
				$lista_strumenti[$commessa->id_strumento_misura] = array();
			}
			array_push($lista_strumenti[$commessa->id_strumento_misura], array(
					"numero"=>$commessa->numero,
					"fase"=>$commessa->fase,
					"macchina"=>$commessa->macchina,
					"articolo"=>$commessa->articolo,
					"data_inizio"=>$commessa->data_inizio,
					//"data_fine"=>$commessa->data_fine,
					//"collocazione"=>$collocazione_strumenti[$commessa->id_strumento_misura], //prima prenotazione, metto lo strumento qui
			));
		}
		return View::make('programmazione.index', array('commesse'=>$lista_strumenti, 'collocazione'=>$collocazione_strumenti));
	}
	
	public function postSalvaPosizioni()
	{
		
		//prendo la stringa dal campo hidden
		$posizioni_str = Input::get('mappa_posizioni');
		
		//parsifico la stringa e aggiorno il DB
		$str_strumenti_misura = explode("$", $posizioni_str);
		
		//$mappa_posizioni = array();
		foreach($str_strumenti_misura as $str_strumento_misura){
			if(strlen($str_strumento_misura) > 0){
				$lista_strumento_misura = explode("&", $str_strumento_misura);
				//$mappa_posizioni[$lista_strumento_misura[0]] = array();
				for($i = 1; $i < count($lista_strumento_misura); $i++){
					//array_push($mappa_posizioni[$lista_strumento_misura[0]], $lista_strumento_misura[$i]);
					list($numero, $fase) = explode("-", $lista_strumento_misura[$i]);
					DB::update('UPDATE commesse SET posizione = ? WHERE id_strumento_misura = ? AND numero = ? AND fase = ?', array($i-1, $lista_strumento_misura[0], $numero, $fase));
				}
			}	
		}
		
		//TODO: fare i controlli d'errore e ritornare il messaggio corretto
		//0: errore - 1: corretto
		return Redirect::to('programmazione')->with('codice_errore', 1);
	}
}